package excel.imp;//package cn.xueden.common.core.excel.imp;
//
//
//import lombok.AllArgsConstructor;
//import lombok.Builder;
//import lombok.NoArgsConstructor;
//
//import java.io.Serializable;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * 数据导入
// *
// * @author Gxr
// * @since 2023-12-01
// */
//@Builder
//@NoArgsConstructor
//@AllArgsConstructor
//public class ExcelCommonListener<T extends Serializable> extends AnalysisEventListener<T> {
//
//    private Integer batchCount;
//
//    private ImportTemple<T> importTemple;
//
//    private List<T> dataList;
//
//    public ExcelCommonListener(Integer batchCount, ImportTemple<T> importTemple) {
//        this.batchCount = batchCount;
//        this.importTemple = importTemple;
//        this.dataList = new ArrayList<>(batchCount);
//    }
//
//    @Override
//    public void onException(Exception exception, AnalysisContext context) {
//        exception.printStackTrace();
//        // 如果是某一个单元格的转换异常 能获取到具体行号
//        // 如果要获取头的信息 配合invokeHeadMap使用
//        if (exception instanceof ExcelDataConvertException) {
//            ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException)exception;
//            String error =
//                "第" + (excelDataConvertException.getRowIndex() + 1) + "行,第" + (excelDataConvertException.getColumnIndex() + 1) + "列解析异常:" + excelDataConvertException.getMessage();
//
//            importTemple.exception(error, null);
//        } else {
//            Integer rowIndex = context.readSheetHolder().getRowIndex();
//            String error = "第" + (rowIndex + 1) + "行解析发生异常:" + exception.getMessage();
//            importTemple.exception(error, null);
//        }
//    }
//
//    @Override
//    public void invoke(T data, AnalysisContext context) {
//        if (!importTemple.valid(data, context)) {
//            return;
//        }
//        dataList.add(data);
//        if (dataList.size() >= batchCount) {
//            importTemple.executeData(dataList);
//            dataList.clear();
//        }
//    }
//
//    @Override
//    public void doAfterAllAnalysed(AnalysisContext context) {
//        if (CollUtil.isNotEmpty(dataList)) {
//            importTemple.executeData(dataList);
//        }
//    }
//}